package com.hoshino.momochi.service;

import com.hoshino.momochi.model.domain.Blog;
import com.hoshino.momochi.model.domain.BlogStar;
import com.hoshino.momochi.model.domain.CollectionBlog;

import java.util.List;

public interface CollectionBlogService {
    /**
     * 查询指定收藏夹 内容
     *
     * @param collectionBlog
     * @return
     */
    CollectionBlog findTreeNode(CollectionBlog collectionBlog);

    List<Blog> findCollectionBlogs(Long id);

    /**
     * 根据 用户ID 查询该用户的所有收藏夹信息
     *
     * @param collectionBlog
     * @return
     */
    List<CollectionBlog> findAllByUserId(CollectionBlog collectionBlog);

    /**
     * 创建收藏夹 需要 user_id 以及 parent_id create_time collection_name
     *
     * @param collectionBlog user_id parent_id create_time collection_name
     */
    void createCollectionBlog(CollectionBlog collectionBlog);

    /**
     * 删除收藏夹
     *
     * @param collectionBlog user_id id
     */
    void delCollectionBlog(CollectionBlog collectionBlog);

    /**
     * 向收藏夹中添加 收藏
     *
     * @param blogStar create_time collection_id blog_id
     */
    void addBlogInCollection(BlogStar blogStar);

    /**
     * 删除收藏博客
     *
     * @param blogStar collection_id blog_id
     */
    void delBlogInCollection(BlogStar blogStar);

    /**
     * 通过 用户 id 判断 这个收藏夹id 是否是属于该用户
     *
     * @param uid
     * @return
     */
    Long getCidByUserId(Long uid, Long cid);

    /**
     * 根据 收藏夹id 和 博客 id 查询 BlogStar
     *
     * @param cid
     * @param bid
     * @return
     */
    BlogStar findByTwoId(Long cid, Long bid);

    /**
     * 查询用户是否 收藏这篇文章
     *
     * @param uid
     * @param bid
     * @return
     */
    Long findUserIsStar(Long uid, Long bid);

    /**
     * 保证 一个 用户 所有收藏夹 不会出现相同的 博客
     *
     * @param cid
     * @param bid
     */
    void delUserBlogStar(Long cid, Long bid);

    /**
     * 删除 isDelete = 1 的数据
     */
    void delIsDeleteAsTrue();

    /**
     * 删除收藏夹 中 所有收藏的博客
     *
     * @param cid
     */
    void delCollectionAllStar(Long cid);
}
